/* Copyright (c) 2004-2024 peigen.info. All rights reserved. */

package info.peigen.hotpot.business.account.facade.order.bind;

import info.peigen.hotpot.business.account.facade.order.base.AbstractAccountServiceOrder;
import info.peigen.hotpot.business.router.facade.enums.ChannelCode;
import info.peigen.hotpot.common.core.domain.bank.Bank;
import info.peigen.hotpot.common.core.enums.CardAccountType;
import info.peigen.hotpot.common.core.enums.CertType;
import info.peigen.hotpot.common.core.enums.Currency;
import jakarta.validation.constraints.NotEmpty;
import lombok.*;
import lombok.experimental.Accessors;
import lombok.experimental.FieldDefaults;
import lombok.experimental.SuperBuilder;

import static info.peigen.hotpot.common.core.enums.CardAccountType.Private;
import static info.peigen.hotpot.common.core.enums.Currency.CNY;

/**
 * <b>(BindWithdrawCardOrder)</b>
 * 绑定 体现 卡
 *
 * @author Peigen
 * @version 1.0.0
 * @since 2021/8/12
 */
@EqualsAndHashCode(callSuper = true)
@SuperBuilder
@Data
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
@Accessors(chain = true)
public class BindWithdrawCardOrder extends AbstractAccountServiceOrder {
    String cardId;
    /** 客户Id */
    @NotEmpty
    String          customerId;
    /** 卡姓名 */
    @NotEmpty
    String          cardName;
    /** 卡号 */
    @NotEmpty
    String          cardNo;
    /** 预留手机号 */
    @NotEmpty
    String          mobile;
    /** 币种 */
    @Builder.Default
    Currency        currency        = CNY;
    /** 银行卡账户类型 */
    @Builder.Default
    CardAccountType cardAccountType = Private;
    /** 提现渠道编码 */
    ChannelCode channelCode;
    /** 支行名称 */
    String      cardBranchName;
    /** 企业银行开户信息 */
    String      enterpriseBankInfoImage;
    /** 省 */
    String      province;
    /** 城市 */
    String      city;
    /** 区县 */
    String      district;
    /** 省编码 */
    String      provinceCode;
    /** 城市编码 */
    String      cityCode;
    /** 区县编码 */
    String      districtCode;
    Bank        bank;
    /** 来源 */
    /** 证件号码 */
    String      certNo;
    /** 证件类型 */
    CertType    certType;
    /** 身份信息ID */
    Integer     certIdentityId;
}
